1. Field of the Invention
This invention relates to data storage devices and more particularly to systems and methods for dynamically configuring timers used to monitor long busy states in a remote mirror and copy environment.
2. Description of the Related Art
In a remote mirror and copy environment, whenever a primary (i.e., source) storage controller mirrors data to a secondary (i.e., target) controller, the primary controller monitors the state of the secondary volumes that are being used to mirror the data. The primary controller may utilize a “long busy” timer to monitor the state of the secondary volumes in a peer-to-peer remote copy (PPRC) relationship.
Conventionally, the long busy state timer in the primary storage controller has been hard coded to a certain value. Analysis of several critical field problems, however, has led to the discovery that the problems may have been prevented or mitigated if the long busy state timer had a different value than the hard coded value. Consequently, some customers may desire a long busy state timer that has a value greater than the hard coded value. This may reduce the likelihood that a suspended condition will occur when a secondary volume undergoes a lengthy error recovery process. Other customers, by contrast, may desire a long busy state timer with a reduced value so the suspended condition occurs more frequently. This may prevent application I/O from building up while a secondary storage controller undergoes a lengthy recovery process.
Currently, the only way a customer can change the value of the long busy state timer is using a peek-and-poke capability. The peek may be used to view the current value of the long busy state timer and the poke may be used to modify the value. When microcode in the primary controller detects a poke event, the microcode may replace the default value with a user-selected value. By design, the long busy state timer value may be persistent across initial microcode loads, warmstarts, and failure conditions in the storage controller.
Although a peek-and-poke process may provide a way to modify the value of the long busy state timer, it may still not be flexible enough to satisfy customer needs. Modifying the value may require user intervention and thus may be impossible to modify in real time. In addition, the peek-and-poke capability may be susceptible to errors because the timer value must normally be set in all clusters of one or more primary controllers, and the wrong variable may be poked. Poking the wrong variable may cause unpredictable behavior or even catastrophic failures in the storage system.
In view of the foregoing, what is needed is a system and method to dynamically alter the value of a long busy state timer. Ideally, the system and method could be used to modify the value in real time without requiring user intervention. Similarly, the system and method would ideally enable the timer value to be dynamically modified for different applications.